/*
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
 *
 * Copyright (c) 2013-2014 jfinal app. jfapp Group.
 */

package app.models.wx;

import com.github.sog.annotation.TableBind;
import com.github.sog.plugin.sqlinxml.SqlKit;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Model;

import java.util.List;

/**
 * <p>
 * The table olx_menu mapping model.
 * </p>
 */
@TableBind(tableName = "olx_menu")
public class Menu extends Model<Menu> {

    private static final long   serialVersionUID = 1L;
    /**
     * The public dao.
     */
    public static final Menu dao = new Menu();

    /**
     * 由于只会存在一条菜单信息，所以默认ID为1
     */
    public static final int ID = 1;


    public List<Menu> list(){
    	return find(SqlKit.sql("menu.list"));
    }

    /**
     * 删除所有菜单
     */
    public void deleteAll() {

    }

    /**
     * 查询可用的menu
     *
     * @return menu列表
     */
    public List<Menu> menus() {
        List<Menu> list = find(SqlKit.sql("menu.menus"), Menu.ID, true); //查询顶级可用的menu
        if (list != null && !list.isEmpty()) {
            for (Menu menu : list) {
                List<Menu> subList = find(SqlKit.sql("menu.menus"), menu.get("id"), true); //查询顶级可用的menu
                menu.put("subs", subList);
            }
        }
        return list;
    }

    /**
     * 设置状态
     *
     * @param id 键值
     * @param status 状态
     */
    public void changeStatus(long id, boolean status) {
        Db.update(SqlKit.sql("menu.changeStatus"), status, id, id);
    }

    /**
     * 查询click事件菜单
     * @param menuType 菜单类型
     * @param evt 事件值
     * @return
     */
    public Menu findByEvt(String menuType, String evt) {
        return findFirst(SqlKit.sql("menu.findByEvt"), menuType, evt, true);
    }

    /**
     * 查询事件菜单
     * @param menuType 菜单类型
     * @param urlPath 访问地址
     * @return
     */
    public Menu findByUrlPath(String menuType, String urlPath) {
        return findFirst(SqlKit.sql("menu.findByUrlPath"), menuType, urlPath, true);
    }
}